<?php
namespace app\api\controller;
use app\common\controller\ApiBase;
use app\common\library\ErrorType;
use app\common\library\Sign;
use app\common\library\YuUtil;
use app\common\model\UrlPerson;
use app\common\model\User;
use think\Request;


/**
 * @title 个人消息类
 * @description 个人消息类
 * @package app\api\controller
 */
class Message extends ApiBase
{
    /**
     * @var 用户登陆的id
     */
    protected $uid;
    /**
     * @var array 前置操作，这里是检查登录
     */
    protected $beforeActionList = [
        'checkAuth'
    ];

    /**
     * @title 检查登录
     * @description 检查登录
     * @author Admin ldy
     * @param name:token  type:string require:1 default:1 desc:
     * @time 2018/9/19  9:36
     */
    protected function checkAuth(){
        /// 如需登录，调用此方法鉴权
        /// 注解1：如果已经登录，则会获取到uid;否则会直接打印错误信息，不执行下面的代码
        /// 注解2：该方法走的是缓存，不通过数据库检查
        /// 注解3：如果没有token信息，需要调登录接口，重新获取token，并保存，token有效期暂定为30天
        /// 注解4：该类所有方法需要登录鉴权，故预先加载
        $this->uid = $this->getUidByCheck();
    }

    /**
     * @title 用户的意见与建议
     * @description 用户的意见与建议
     * <br>channel 反馈的渠道
     * <br>msg 用户的意见与建议
     * <br>status 回复的状态(1是后台未读，2是是后台已读但未回复，3是是后台回复但用户未读，4是用户已读)
     * <br>user_uuid 未登录用户的唯一标识(如果不登录用户的意见，就必须填这个）(这里暂时没用上，后期会开发游客访问的时候，可以用上)
     * <br>helpful_status 是否有帮助（1是有帮助的，2是没有帮助的，3是不知道是否有帮助，4是其他）
     * @author Admin ldy
     * @url /api/message/userAdvise
     * @param name:token  type:string require:1 default:1 desc:
     * @param name:channel  type:string require:1 default:1 desc:反馈的渠道(例如ios\android\web\mini_pro\other)
     * @param name:msg  type:string require:1 default:1 desc:用户的意见与建议
     * @param name:helpful_status  type:string require:1 default:1 desc:是否有帮助（1是有帮助的，2是没有帮助的，3是不知道是否有帮助，4是其他）
     * @time 2018/10/15  14:32
     */
    public function userAdvise(){
        //在账户中心操作的时候，是已经登录的，所以不用传user_uuid
        $channel = $this->request->param('channel');
        $msg = $this->request->param('msg');
        $helpful_status = $this->request->param('helpful_status');
        $this->checkEmptyParams($channel);
        $this->checkEmptyParams($msg);
        $this->checkEmptyParams($helpful_status);

        //测试发送一条用户的意见与建议
        $options=array(
            'channel'=>$channel,
            'msg'=>$msg,
            'status'=>'1',//默认第一提交的时候，是后台未读状态
            'user_uuid'=>'',
            'helpful_status'=>$helpful_status,
        );
        $re = \app\common\library\YuAdvise::addAdvise($this->uid,$options);
        if ($re->getStatus()){
            $this->success('成功！',$re->getData(),200);
        }else{
            $this->err($re->getMsg());
        }
    }

    /**
     * @title 获取用户的消息，分页加载
     * @description 获取用户的消息，分页加载
     * @author Admin ldy
     * @url /api/message/getMsgByPage
     * @param name:token  type:string require:1 default:1 desc:
     * @param name:page  type:string require:1 default:1 desc:需要展示的页数
     * @time 2018/10/15  13:50
     */
    public function getMsgByPage(){
        $page = $this->request->param('page');
        $this->checkEmptyParams($page);
        //获取用户的消息，分页加载
        $re = \app\common\library\YuMsg::getMsgByUserId($this->uid,$page);
        if ($re->getStatus()){
            $this->success('成功！',$re->getData(),200);
        }else{
            $this->err($re->getMsg());
        }
    }

    /**
     * @title 读取用户消息
     * @description 读取用户消息
     * @author Admin ldy
     * @url /api/message/setMsgRead
     * @param name:token  type:string require:1 default:1 desc:
     * @param name:id  type:string require:1 default:1 desc:消息的id
     * @time 2018/10/15  13:50
     */
    public function setMsgRead(){
        $id = $this->request->param('id');
        $this->checkEmptyParams($id);
        $re = \app\common\library\YuMsg::setMsgRead($id);
        if ($re->getStatus()){
            $this->success('成功！',$re->getData(),200);
        }else{
            $this->err($re->getMsg());
        }
    }

    /**
     * @title 用户删除消息
     * @description 用户删除消息
     * @author Admin ldy
     * @url /api/message/setMsgDelete
     * @param name:token  type:string require:1 default:1 desc:
     * @param name:id  type:string require:1 default:1 desc:消息的id
     * @time 2018/10/15  13:50
     */
    public function setMsgDelete(){
        $id = $this->request->param('id');
        $this->checkEmptyParams($id);
        $re = \app\common\library\YuMsg::deleteMsg($id);
        if ($re->getStatus()){
            $this->success('成功！',$re->getData(),200);
        }else{
            $this->err($re->getMsg());
        }
    }

    /**
     * @title 测试
     * @description 测试
     * @author Admin ldy
     * @url /api/message/test
     * @param name:token  type:string require:1 default:1 desc:
     * @time 2018/10/15  13:50
     */
    public function test(){
        //测试发送一条站内信
        $re = \app\common\library\YuMsg::sendMsgToUserByUserId($this->uid,'测试消息1','这是一条测试消息1');
        if ($re->getStatus()){
            $this->success('成功！',$re->getData(),200);
        }else{
            $this->err($re->getMsg());
        }
    }


}
